package com.fmy.mcsecurity.integration;

import com.fmy.mcsecurity.token.model.SecurityToken;
import org.springframework.security.core.Authentication;

import java.util.Map;

/**
 * @author Mr.fmy
 * @version 1.0.0
 * @ClassName TypeIntegration
 * @Description TODO 登录方式处理接口
 * @createTime 2019/12/9 10:21
 */
public interface TypeIntegration {

    /**
     * 是否支持
     *
     * @param type 登录方式
     * @return 是否支持
     */
    boolean support(String type);

    /**
     * 前置处理
     *
     * @param params 登录携带参数
     */
    void before(Map<String, Object> params);

    /**
     * 后置处理、只有登录成功时才会调用
     *
     * @param authentication 授权类
     * @param token          token类
     */
    void complete(Authentication authentication, SecurityToken token);

    /**
     * 后置处理、只有失败时才会调用
     */
    default void fail(String type,String username){

    }
}
